[2025-07-08] File Vulnerability
๐ฆฅ ๋ณธ๋ฌธ
์ ์
ํ์ผ์ ์ ๋ก๋, ๋ค์ด๋ก๋, ์ฝ๊ธฐ, ์ญ์ , ๊ฒฝ๋ก ์ ๊ทผ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ ๋ ๋ฐ์ํ๋ ์ทจ์ฝ์ .
์ข ๋ฅ
- File Upload Vulnerablility : ํ์ผ ์ ๋ก๋ ์ ๋ฐ์ํ๋ ์ทจ์ฝ์ .
- File Download Vulnerablilty : ํ์ผ ๋ค์ด๋ก๋ ์ ๋ฐ์ํ๋ ์ทจ์ฝ์ .
File Upload Vulnerability
์ ์
ํ์ผ ์ ๋ก๋ ์ ๋ฐ์ํ๋ ์ทจ์ฝ์ . ์ด์ฉ์๊ฐ ํ์ผ์ ์ด๋ฆ์ ์์๋ก ์ ํ ์ ์์ ๋ ๋ฐ์. ์ ์ฑ ์คํฌ๋ฆฝํธ๋ WebShell์ ์ ๋ก๋ํ์ฌ ์๊ฒฉ ์ฝ๋๋ฅผ ์คํํ์ฌ ๋ฐ์ํ๋ค.
์น ์
๊ณต๊ฒฉ์๊ฐ ์น ์๋ฒ์ ์ ๋ก๋ํ์ฌ ์ฌ์ฉํ๋ ์๊ฒฉ ๋ช ๋ น ์คํ ๋๊ตฌ. ์น์ ํตํด ๋ช ๋ น์ด๋ฅผ ์คํํ ์ ์๋ ์(ํฐ๋ฏธ๋) ํํ์ ์ ์ฑ ์คํฌ๋ฆฝํธ.
- CGI : ์น ์๋ฒ์ ์ธ๋ถ ํ๋ก๊ทธ๋จ ์ฌ์ด์์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํ๋กํ ์ฝ. ์น ์๋ฒ๋ HTML ๊ฐ์ ์ ์ ์ธ ํ์ผ๋ง ์ ๊ณตํ ์ ์์ง๋ง CGI๋ฅผ ํตํด ๋์ ์ผ๋ก ์คํ๋๋ ํ๋ก๊ทธ๋จ ๊ฒฐ๊ณผ๋ ์ ๊ณตํ ์ ์๋ค. ์น ์๋ฒ๋ CGI๋ฅผ ํตํด ํ์ผ์ ์คํํ๊ณ ์ฌ์ฉ์์๊ฒ ๋ฐํํ๋ค.
- ๋์ ํ๋ฆ
-
์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ
cgi-bin/script.py?name=yunseo
- ์น ์๋ฒ๊ฐ CGI ํ๋ก๊ทธ๋จ(script.py)์ ์คํ
- ์์ฒญ ๋ฐ์ดํฐ(name=yunseo)๋ฅผ CGI ํ๋ก๊ทธ๋จ์ ์ ๋ฌ
- CGI ํ๋ก๊ทธ๋จ์ด ๋์ ํ HTML ํ์์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ
- ์น ์๋ฒ๊ฐ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต
-
- ๋์ ํ๋ฆ
์ข ๋ฅ
- Path Traversal : ์์ ๋๋ ํฐ๋ฆฌ์ ์ ๊ทผํ์ฌ ํ์ผ์ ์
๋ก๋ํ ์ ์๋ ์ทจ์ฝ์ .
- EX) ์คํ๋๊ณ ์๋ app.py์ ๊ฐ์ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ ๋ก๋ํ์ฌ app.py๋ฅผ ๋ฎ์ด ์์ด๋ค. ์๋ฒ๊ฐ ์ฌ์คํ๋ ๋ ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๋ค.
- ์
์ฑ ํ์ผ ์
๋ก๋ : ํ์ผ์ ์ ๋๋ก ๊ฒ์ฌํ์ง ์์์ ๋ฐ์ํ๋ ์ทจ์ฝ์ .
- EX) ํ๋กํ ์ฌ์ง ์ ๋ก๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ํ์ด์ง์ ์๋ฒ๋ ํ์ฅ์๋ฅผ .jpg .png๋ฑ์ผ๋ก ํํฐ๋ง์ ํ๋ ๊ฒฝ์ฐ์ shell.php.jpg ์ฒ๋ผ ํ์ฅ์๋ง ์์ฅํ Webshell ํ์ผ์ ์ ๋ก๋ํ๊ณ ํด๋น ํ์ผ์ ์ ๊ทผํ ๋ ๋ฐ์ํ๋ค. ๋๋ html ํ์ผ์ ์ ์์ ์ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ๋ฉด XSS ๊ณต๊ฒฉ์ผ๋ก๋ ์ด์ด์ง ์ ์๋ค.
๋์ ๋ฐฉ๋ฒ
- ํ์ผ ํ์ฅ์๋ MIME ํ์ ์ ๋ชจ๋ ์๋ฒ ์ธก์์ ๋์กฐ ๋ฐ ๊ฒ์ฌํ์ฌ ๋จ์ ํ์ฅ์ ๋ณํ์ ๋ง์ ์ ์์
- Magic Number๋ฅผ ํตํด ํ์ผ ๋ด์ฉ ๊ฒ์ฆํ์ฌ ํ์ฅ์๋ MIME์ด ์ ์์ด์ด๋ ๋ด๋ถ์ ์ ์ฑ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ์ฌ ๊ฒ์ฌํ ์ ์์
- ์คํ ๊ถํ ์๋ ๋๋ ํฐ๋ฆฌ์ ์ ์ฅํ์ฌ ์ ๋ก๋๋ ํ์ผ์ ์ง์ ์คํํ์ง ๋ชปํ๊ฒ ํจ
- ์ ๋ก๋ ํ์ผ๋ช ์ ๋๋คํ ์ด๋ฆ์ผ๋ก ์ฌ์ค์ ํ์ฌ ๊ฒฝ๋ก ์์ธก์ ๋ง์
File Download Vulnerability
์ ์
ํ์ผ ๋ค์ด๋ก๋ ์ ๋ฐ์ํ๋ ์ทจ์ฝ์ . ์ด์ฉ์๊ฐ ๋ค์ด๋ก๋ํ ํ์ผ์ ์ด๋ฆ์ ์์๋ก ์ ํ ์ ์์ ๋ ๋ฐ์.
๋์ ํ๋ฆ
- ์ฌ์ฉ์๊ฐ ํน์ ํ์ผ์ ์์ฒญ
- ์๋ฒ๋ BASE_DIR์ ๊ธฐ์ค์ผ๋ก ํด๋น ํ์ผ์ ์ฐพ์ ์ ์ก
- ๊ณต๊ฒฉ์๊ฐ ../../../ ๋ฑ์ ์ด์ฉํ์ฌ ๋ฏผ๊ฐํ ํ์ผ์ ์์ฒญ
- ์๋ ๊ฒฝ๋ก๋ฅผ ํํฐ๋งํ์ง ์๋ ๊ฒฝ์ฐ ๋ฏผ๊ฐํ ํ์ผ์ ์ ๋ณด๊ฐ ๋ ธ์ถ
๋์ ๋ฐฉ๋ฒ
- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ํ์ผ๋ช ์ ๋ฐ๋ก ๋ค์ด๋ก๋ํ์ง ์๊ณ ID ๊ธฐ๋ฐ์ผ๋ก ๋งคํ ํ ๋ค์ด
- ์๋ ๊ฒฝ๋ก/์ ๋ ๊ฒฝ๋ก ์ ๊ทํ ๋ฐ ํํฐ๋ง์ ํตํด ๊ธฐ์ค ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฒ์ด๋๋ ๊ฒ์ ๋ง์
- ๋ค์ด๋ก๋ ๋์ ํ์ผ์ ํ์ดํธ๋ฆฌ์คํธ๋ก ์ ํํ์ฌ ์์์ ํ์ผ ์ ๊ทผ์ ๋ง์
- ๋ค์ด๋ก๋ ์ ์ธ์ , ํ ํฐ์ ํตํ ์ธ์ฆ ๋ฐ ๊ถํ ํ์ธ
- Content-Disposition์ ์ค์ ํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ผ์ ๋ฐ๋ก ์คํํ๊ฑฐ๋ ๋ ๋๋งํ์ง ์๊ณ ๋ฌด์กฐ๊ฑด ๋ค์ด๋ก๋ํ๋๋ก ๊ฐ์
- ์ค์ ํ์ง ์์ผ๋ฉด ์๋ฒ์์ ํน์ ํ์ผ์ ๊ทธ๋ฅ ๋ณด๋ด๋ฒ๋ฆฌ๋ฉด ์นํ์ด์ง์ฒ๋ผ ๋๋๋ง์ ํ๊ธฐ ๋๋ฌธ์ ์ ์ฑ ์ฝ๋๊ฐ ์คํ๋๋ค.
Leave a comment